package day16.myclassloader01;

/**
 * @author Xiao
 * @date 2021/8/10
 */
public class ClassLoaderDemo01 {
    /**
     * 类加载器-分类
     * 	启动类加载器(Bootstrap ClassLoader): 虚拟机内置的类加载器
     * 	平台类加载器(Platform Classloader): 负责加载JDK中一些特殊的模块
     * 	系统类加载器(System Classloader): 负责加载用户类路径上所指定的类库
     * 	类加载器-双亲委派模型
     * 	如果一个类加载器收到了类加载请求，它并不会自己先去加载，而是把这个请求委托给父类的加载器去执行，
     * 	如果父类加载器还存在其父类加载器，则进一步向上委托，依次递归，请求最终将到达顶层的启动类加载器，
     * 	如果父类加载器可以完成类加载任务，就成功返回，倘若父类加载器无法完成此加载任务，子加载器才会尝试自己去加载.
     */
    public static void main(String[] args) {
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        ClassLoader classLoader1 = systemClassLoader.getParent();
        ClassLoader classLoader2 = classLoader1.getParent();
        System.out.println("系统类加载器：" + systemClassLoader);
        System.out.println("平台类加载器：" + classLoader1);
        System.out.println("启动类加载器：" + classLoader2);
    }
}
